﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CMS_GYM.Data;
using CMS_GYM.Events;

namespace CMS_GYM.Interface
{
    public partial class frmLichSanCauSaoLuu : frmTemplete1
    {
        clsLichChiTietSaoLuuBUS LichChiTietSaoLuuBUS = new clsLichChiTietSaoLuuBUS();
        clsSanCauBUS SanCauBUS = new clsSanCauBUS();
        DataTable dtLichChiTietSaoLuu = new DataTable();
        DateTime NgaySaoLuu = new DateTime();

        #region Initial
        public frmLichSanCauSaoLuu()
        {
            InitializeComponent();
            lblTitle.Text = "THEO DÕI LỊCH SÂN CẦU SAO LƯU";
            uct_Refresh.Refresh.Click += new EventHandler(btn_Refresh_Click);
            uct_Delete.Delete.Click += new EventHandler(btn_Delete_Click);
        }
        #endregion

        #region Functions

        private void SetPermission()
        {
            //uct_Reset.Enabled = clsUser.LayThongTinPhanQuyen("SaoLuuLichSanCau").ChucNang.Them;
            //uct_Save.Enabled = clsUser.LayThongTinPhanQuyen("SaoLuuLichSanCau").ChucNang.Sua;
            uct_Delete.Enabled = clsUser.LayThongTinPhanQuyen("SaoLuuLichSanCau").ChucNang.Xoa;
        }

        #region LoadData()
        private void LoadData()
        {
            DataTable dtSanCau = SanCauBUS.LayBang();
            DateTime weekstart = new DateTime(NgaySaoLuu.Year, NgaySaoLuu.Month, NgaySaoLuu.Day, 0, 0, 0);
            AppointmentList apptsSan1 = new AppointmentList();
            AppointmentList apptsSan2 = new AppointmentList();
            AppointmentList apptsSan3 = new AppointmentList();
            if (dtSanCau.Rows.Count == 2)
            {
                apptsSan1 = TaiDuLieuLichCauLong(int.Parse(dtSanCau.Rows[0]["SanCauId"].ToString()), weekstart);
                apptsSan2 = TaiDuLieuLichCauLong(int.Parse(dtSanCau.Rows[1]["SanCauId"].ToString()), weekstart);
            }
            else if (dtSanCau.Rows.Count == 3)
            {
                apptsSan1 = TaiDuLieuLichCauLong(int.Parse(dtSanCau.Rows[0]["SanCauId"].ToString()), weekstart);
                apptsSan2 = TaiDuLieuLichCauLong(int.Parse(dtSanCau.Rows[1]["SanCauId"].ToString()), weekstart);
                apptsSan3 = TaiDuLieuLichCauLong(int.Parse(dtSanCau.Rows[2]["SanCauId"].ToString()), weekstart);
            }
            dscSanCau01.Date = weekstart;
            dscSanCau01.Appointments = apptsSan1;
            dscSanCau02.Date = weekstart;
            dscSanCau02.Appointments = apptsSan2;
            dscSanCau03.Date = weekstart;
            dscSanCau03.Appointments = apptsSan3;
        }
        #endregion

        #region TaiDuLieuLichCauLong(int SanCauId, DateTime NgaySaoLuu)
        private AppointmentList TaiDuLieuLichCauLong(int SanCauId, DateTime NgaySaoLuu)
        {
            try
            {
                var appts = new AppointmentList();
                var rand = new Random();
                DataTable table = LichChiTietSaoLuuBUS.LayBangTheoSanCauId(SanCauId, NgaySaoLuu);
                if (table.Rows.Count == 0) return appts;
                switch (NgaySaoLuu.DayOfWeek)
                {
                    #region Monday
                    case DayOfWeek.Monday:
                        foreach (DataRow dr in table.Rows)
                        {
                            ExtendedAppointment appt = new ExtendedAppointment();
                            string[] GioBatDau = dr["GioBatDau"].ToString().Split(':');
                            string[] GioKetThuc = dr["GioKetThuc"].ToString().Split(':');
                            switch (dr["TenNgayTrongTuan"].ToString().ToUpper())
                            {
                                case "THỨ HAI":
                                    appt.DateStart = NgaySaoLuu.AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ BA":
                                    appt.DateStart = NgaySaoLuu.AddDays(1).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(1).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ TƯ":
                                    appt.DateStart = NgaySaoLuu.AddDays(2).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(2).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ NĂM":
                                    appt.DateStart = NgaySaoLuu.AddDays(3).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(3).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ SÁU":
                                    appt.DateStart = NgaySaoLuu.AddDays(4).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(4).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ BẢY":
                                    appt.DateStart = NgaySaoLuu.AddDays(5).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(5).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "CHỦ NHẬT":
                                    appt.DateStart = NgaySaoLuu.AddDays(6).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(6).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                            }
                            appt.Subject = dr["HoTen"].ToString();
                            //appt.LichChiTietId = int.Parse(dr["LichChiTietId"].ToString());
                            //appt.LichId = int.Parse(dr["LichId"].ToString());
                            //appt.NgayTrongTuanId = int.Parse(dr["NgayTrongTuanId"].ToString());
                            appts.Add(appt);
                        }
                        break;
                    #endregion

                    #region Tuesday
                    case DayOfWeek.Tuesday:
                        foreach (DataRow dr in table.Rows)
                        {
                            ExtendedAppointment appt = new ExtendedAppointment();
                            string[] GioBatDau = dr["GioBatDau"].ToString().Split(':');
                            string[] GioKetThuc = dr["GioKetThuc"].ToString().Split(':');
                            switch (dr["TenNgayTrongTuan"].ToString().ToUpper())
                            {
                                case "THỨ HAI":
                                    appt.DateStart = NgaySaoLuu.AddDays(-1).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(-1).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ BA":
                                    appt.DateStart = NgaySaoLuu.AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ TƯ":
                                    appt.DateStart = NgaySaoLuu.AddDays(1).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(1).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ NĂM":
                                    appt.DateStart = NgaySaoLuu.AddDays(2).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(2).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ SÁU":
                                    appt.DateStart = NgaySaoLuu.AddDays(3).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(3).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ BẢY":
                                    appt.DateStart = NgaySaoLuu.AddDays(4).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(4).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "CHỦ NHẬT":
                                    appt.DateStart = NgaySaoLuu.AddDays(5).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(5).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                            }
                            appt.Subject = dr["HoTen"].ToString();
                            //appt.LichChiTietId = int.Parse(dr["LichChiTietId"].ToString());
                            //appt.LichId = int.Parse(dr["LichId"].ToString());
                            //appt.NgayTrongTuanId = int.Parse(dr["NgayTrongTuanId"].ToString());
                            appts.Add(appt);
                        }
                        break;
                    #endregion

                    #region Wednesday
                    case DayOfWeek.Wednesday:
                        foreach (DataRow dr in table.Rows)
                        {
                            ExtendedAppointment appt = new ExtendedAppointment();
                            string[] GioBatDau = dr["GioBatDau"].ToString().Split(':');
                            string[] GioKetThuc = dr["GioKetThuc"].ToString().Split(':');
                            switch (dr["TenNgayTrongTuan"].ToString().ToUpper())
                            {
                                case "THỨ HAI":
                                    appt.DateStart = NgaySaoLuu.AddDays(-2).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(-2).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ BA":
                                    appt.DateStart = NgaySaoLuu.AddDays(-1).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(-1).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ TƯ":
                                    appt.DateStart = NgaySaoLuu.AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ NĂM":
                                    appt.DateStart = NgaySaoLuu.AddDays(1).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(1).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ SÁU":
                                    appt.DateStart = NgaySaoLuu.AddDays(2).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(2).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ BẢY":
                                    appt.DateStart = NgaySaoLuu.AddDays(3).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(3).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "CHỦ NHẬT":
                                    appt.DateStart = NgaySaoLuu.AddDays(4).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(4).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                            }
                            appt.Subject = dr["HoTen"].ToString();
                            //appt.LichChiTietId = int.Parse(dr["LichChiTietId"].ToString());
                            //appt.LichId = int.Parse(dr["LichId"].ToString());
                            //appt.NgayTrongTuanId = int.Parse(dr["NgayTrongTuanId"].ToString());
                            appts.Add(appt);
                        }
                        break;
                    #endregion Wednesday

                    #region Thursday
                    case DayOfWeek.Thursday:
                        foreach (DataRow dr in table.Rows)
                        {
                            ExtendedAppointment appt = new ExtendedAppointment();
                            string[] GioBatDau = dr["GioBatDau"].ToString().Split(':');
                            string[] GioKetThuc = dr["GioKetThuc"].ToString().Split(':');
                            switch (dr["TenNgayTrongTuan"].ToString().ToUpper())
                            {
                                case "THỨ HAI":
                                    appt.DateStart = NgaySaoLuu.AddDays(-3).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(-3).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ BA":
                                    appt.DateStart = NgaySaoLuu.AddDays(-2).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(-2).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ TƯ":
                                    appt.DateStart = NgaySaoLuu.AddDays(-1).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(-1).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ NĂM":
                                    appt.DateStart = NgaySaoLuu.AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ SÁU":
                                    appt.DateStart = NgaySaoLuu.AddDays(1).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(1).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ BẢY":
                                    appt.DateStart = NgaySaoLuu.AddDays(2).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(2).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "CHỦ NHẬT":
                                    appt.DateStart = NgaySaoLuu.AddDays(3).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(3).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                            }
                            appt.Subject = dr["HoTen"].ToString();
                            //appt.LichChiTietId = int.Parse(dr["LichChiTietId"].ToString());
                            //appt.LichId = int.Parse(dr["LichId"].ToString());
                            //appt.NgayTrongTuanId = int.Parse(dr["NgayTrongTuanId"].ToString());
                            appts.Add(appt);
                        }
                        break;
                    #endregion

                    #region Friday
                    case DayOfWeek.Friday:
                        foreach (DataRow dr in table.Rows)
                        {
                            ExtendedAppointment appt = new ExtendedAppointment();
                            string[] GioBatDau = dr["GioBatDau"].ToString().Split(':');
                            string[] GioKetThuc = dr["GioKetThuc"].ToString().Split(':');
                            switch (dr["TenNgayTrongTuan"].ToString().ToUpper())
                            {
                                case "THỨ HAI":
                                    appt.DateStart = NgaySaoLuu.AddDays(-4).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(-4).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ BA":
                                    appt.DateStart = NgaySaoLuu.AddDays(-3).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(-3).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ TƯ":
                                    appt.DateStart = NgaySaoLuu.AddDays(-2).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(-2).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ NĂM":
                                    appt.DateStart = NgaySaoLuu.AddDays(-1).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(-1).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ SÁU":
                                    appt.DateStart = NgaySaoLuu.AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ BẢY":
                                    appt.DateStart = NgaySaoLuu.AddDays(1).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(1).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "CHỦ NHẬT":
                                    appt.DateStart = NgaySaoLuu.AddDays(2).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(2).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                            }
                            appt.Subject = dr["HoTen"].ToString();
                            //appt.LichChiTietId = int.Parse(dr["LichChiTietId"].ToString());
                            //appt.LichId = int.Parse(dr["LichId"].ToString());
                            //appt.NgayTrongTuanId = int.Parse(dr["NgayTrongTuanId"].ToString());
                            appts.Add(appt);
                        }
                        break;
                    #endregion

                    #region Saturday
                    case DayOfWeek.Saturday:
                        foreach (DataRow dr in table.Rows)
                        {
                            ExtendedAppointment appt = new ExtendedAppointment();
                            string[] GioBatDau = dr["GioBatDau"].ToString().Split(':');
                            string[] GioKetThuc = dr["GioKetThuc"].ToString().Split(':');
                            switch (dr["TenNgayTrongTuan"].ToString().ToUpper())
                            {
                                case "THỨ HAI":
                                    appt.DateStart = NgaySaoLuu.AddDays(-5).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(-5).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ BA":
                                    appt.DateStart = NgaySaoLuu.AddDays(-4).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(-4).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ TƯ":
                                    appt.DateStart = NgaySaoLuu.AddDays(-3).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(-3).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ NĂM":
                                    appt.DateStart = NgaySaoLuu.AddDays(-2).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(-2).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ SÁU":
                                    appt.DateStart = NgaySaoLuu.AddDays(-1).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(-1).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ BẢY":
                                    appt.DateStart = NgaySaoLuu.AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "CHỦ NHẬT":
                                    appt.DateStart = NgaySaoLuu.AddDays(1).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(1).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                            }
                            appt.Subject = dr["HoTen"].ToString();
                            //appt.LichChiTietId = int.Parse(dr["LichChiTietId"].ToString());
                            //appt.LichId = int.Parse(dr["LichId"].ToString());
                            //appt.NgayTrongTuanId = int.Parse(dr["NgayTrongTuanId"].ToString());
                            appts.Add(appt);
                        }
                        break;
                    #endregion

                    #region Sunday
                    case DayOfWeek.Sunday:
                        foreach (DataRow dr in table.Rows)
                        {
                            ExtendedAppointment appt = new ExtendedAppointment();
                            string[] GioBatDau = dr["GioBatDau"].ToString().Split(':');
                            string[] GioKetThuc = dr["GioKetThuc"].ToString().Split(':');
                            switch (dr["TenNgayTrongTuan"].ToString().ToUpper())
                            {
                                case "THỨ HAI":
                                    appt.DateStart = NgaySaoLuu.AddDays(-6).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(-6).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ BA":
                                    appt.DateStart = NgaySaoLuu.AddDays(-5).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(-5).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ TƯ":
                                    appt.DateStart = NgaySaoLuu.AddDays(-4).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(-4).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ NĂM":
                                    appt.DateStart = NgaySaoLuu.AddDays(-3).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(-3).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ SÁU":
                                    appt.DateStart = NgaySaoLuu.AddDays(-2).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(-2).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                                case "THỨ BẢY":
                                    appt.DateStart = NgaySaoLuu.AddDays(-1).AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddDays(-1).AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));

                                    break;
                                case "CHỦ NHẬT":
                                    appt.DateStart = NgaySaoLuu.AddHours(double.Parse(GioBatDau[0])).AddMinutes(double.Parse(GioBatDau[1])).AddSeconds(double.Parse(GioBatDau[2]));
                                    appt.DateEnd = NgaySaoLuu.AddHours(double.Parse(GioKetThuc[0])).AddMinutes(double.Parse(GioKetThuc[1])).AddSeconds(double.Parse(GioKetThuc[2]));
                                    break;
                            }
                            appt.Subject = dr["HoTen"].ToString();
                            //appt.LichChiTietId = int.Parse(dr["LichChiTietId"].ToString());
                            //appt.LichId = int.Parse(dr["LichId"].ToString());
                            //appt.NgayTrongTuanId = int.Parse(dr["NgayTrongTuanId"].ToString());
                            appts.Add(appt);
                        }
                        break;
                    #endregion
                }
                appts.SortAppointments();
                return appts;
            }
            catch { return new AppointmentList(); }
        }
        #endregion

        #endregion

        #region Events
        #region OnLoad(EventArgs e)
        protected override void OnLoad(EventArgs e)
        {
            try
            {
                base.OnLoad(e);
                DoubleBuffered = true;
                DataTable dtNgaySaoLuu = LichChiTietSaoLuuBUS.LayBangNgaySaoLuu();
                cboNgayXem.DataSource = dtNgaySaoLuu;
                cboNgayXem.DisplayMember = "NgaySaoLuu";
                cboNgayXem.ValueMember = "NgaySaoLuu";
                cboNgayXem.Text = "Chọn ngày xem";
            }
            catch { }
        }
        #endregion

        #region btn_Refresh_Click(object sender, EventArgs e)
        private void btn_Refresh_Click(object sender, EventArgs e)
        {
            //NgaySaoLuu = DateTime.Parse(cboNgayXem.SelectedValue.ToString());
            LoadData();
        }
        #endregion

        #region btn_Delete_Click(object sender, EventArgs e)
        private void btn_Delete_Click(object sender, EventArgs e)
        {
            //btn_Refresh_Click(sender, e);
            try
            {
                if (MessageBox.Show("Xác nhận xóa lịch sao lưu ngày << " + NgaySaoLuu.Day.ToString() + "/"
                    + NgaySaoLuu.Month.ToString() + "/" + NgaySaoLuu.Year.ToString() + ">>?", "Thông báo"
                    , MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.No)
                    return;

                clsLichChiTietSaoLuuBUS LichChiTietSaoLuuBUS = new clsLichChiTietSaoLuuBUS();
                int kq = LichChiTietSaoLuuBUS.DeleteLichChiTiet(NgaySaoLuu);
                if (kq == 1)
                {
                    int kq1 = LichChiTietSaoLuuBUS.DeleteLich(NgaySaoLuu);
                    if (kq1 == 1)
                    {
                        MessageBox.Show("Xóa lịch sân cầu sao lưu thành công.", "Thông báo");
                        OnLoad(e);
                    }
                    else
                        MessageBox.Show("Lỗi xóa lịch sao lưu.", "Thông báo");
                }
                else
                    MessageBox.Show("Lỗi xóa lịch chi tiết sao lưu.", "Thông báo");
            }
            catch { }
        }
        #endregion

        private void cboNgayXem_SelectionChangeCommitted(object sender, EventArgs e)
        {
            NgaySaoLuu = DateTime.Parse(cboNgayXem.SelectedValue.ToString());
        }
        #endregion

        private void frmLichSanCauSaoLuu_Load(object sender, EventArgs e)
        {
            try
            {
                SetPermission();
            }
            catch { }
        }

    }
}
